package com.lzp.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lzp.api.dto.OrderDTO;
import com.lzp.common.result.PageResult;
import com.lzp.user.pojo.dto.UserDTO;
import com.lzp.user.pojo.dto.UserLoginDTO;
import com.lzp.user.pojo.entity.User;
import com.lzp.user.pojo.vo.UserLoginVO;
import com.lzp.user.pojo.vo.UserVO;


public interface IUserService extends IService<User> {

    /**
     * 分页查询用户
     * @param pageNo 页码
     * @param pageSize 页显示数
     * @return 分页查询结果
     */
    PageResult pageUsers(Integer pageNo, Integer pageSize);

    /**
     * 查询所有用户
     * @return 用户列表
     */
    PageResult queryAllUsers();

    /**
     * 根据id查询用户
     * @param userId 用户id
     * @return 用户
     */
    UserVO getUserById(Long userId);

    /**
     * 根据id删除用户
     * @param id 用户id
     * @return 真为删除成功，否则反之
     */
    boolean deleteUser(Long id);

    /**
     * 更新指定用户信息
     * @param userDTO 用户
     * @return 真为更新成功，否则反之
     */
    boolean updateUser(UserDTO userDTO);

    /**
     * 添加用户
     * @param userDTO 用户
     * @return 真为添加成功，否则反之
     */
    boolean addUser(UserDTO userDTO);

    /**
     * 根据用户名和密码查询用户
     * @param userLoginDTO 用户
     * @return 用户
     */

    UserLoginVO login(UserLoginDTO userLoginDTO);

    /**
     * 同时新增用户和订单
     * @param userDTO 用户
     * @param orderDTO 订单
     * @return 真为添加成功，否则反之
     */
    boolean addUserAndOrder(UserDTO userDTO, OrderDTO orderDTO);
}
